﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;

namespace Arkanoid
{
    class Pallete
    {
        //Atributos (Variáveis)
        Texture2D Barra;
        Vector2 Posicao;


        int VelocidadeY = 5, VelocidadeX = 5;
        int DistanciaY, DistanciaX;
        Rectangle TamanhoBarra;
        Bola Ball = new Bola();
        float VelocidadePaletaDireita = 0.7f;

        GameWindow AtributosJanela;

        //Métodos (funções)

        public void LoadContent(Texture2D Barra, Vector2 PosicaoInicial)
        {
            this.Barra = Barra;
            TamanhoBarra = Barra.Bounds;

            //Posicao Inicial da Barra
            Posicao = PosicaoInicial;

            //Determina a Distância Entre as Barras
            DistanciaX = (int)Posicao.X;
            DistanciaY = (int)Posicao.Y;
        }

        public Vector2 Update(GameWindow AtributosJanela, List<Keys> Teclas, int QtdPlayer, Bola Ball)
        {
            this.AtributosJanela = AtributosJanela;

            #region Movimentação das Paletas

            foreach (Keys Tecla in Teclas)
            {
                //if (Keyboard.GetState().IsKeyDown(Tecla) && Tecla == Keys.S)
                //{
                //    Posicao.Y += VelocidadeY;
                //    Posicao.X = VelocidadeX;
                //}

                //if (Keyboard.GetState().IsKeyDown(Tecla) && Tecla == Keys.W)
                //{
                //    Posicao.Y -= VelocidadeY;
                //    Posicao.X = VelocidadeX;
                //}

                if (Keyboard.GetState().IsKeyDown(Tecla) && Tecla == Keys.Right)
                {
                    //Posicao.Y += VelocidadeY;
                    Posicao.X += VelocidadeX;
                }

                if (Keyboard.GetState().IsKeyDown(Tecla) && Tecla == Keys.Left)
                {
                    //Posicao.Y -= VelocidadeY;
                    Posicao.X -= VelocidadeX;
                }

                //if (QtdPlayer == 2)
                //{
                //    if (Keyboard.GetState().IsKeyDown(Tecla) && Tecla == Keys.Down)
                //    {
                //        Posicao.Y += VelocidadeY;
                //        Posicao.X = VelocidadeX + DistanciaX;
                //    }

                //    if (Keyboard.GetState().IsKeyDown(Tecla) && Tecla == Keys.Up)
                //    {
                //        Posicao.Y -= VelocidadeY;
                //        Posicao.X = VelocidadeX + DistanciaX;
                //    }
                //}

                //if (QtdPlayer == 1)
                //{
                //    if ((Keyboard.GetState().IsKeyUp(Tecla) && Tecla == Keys.Down) || (Keyboard.GetState().IsKeyUp(Tecla) && Tecla == Keys.Up))
                //    {
                //        Posicao.Y = (Ball.posicao.Y - (TamanhoBarra.Height / 2)) * VelocidadePaletaDireita;
                //    }
                //}
            }

            #endregion

            #region Restringir a Tela para os Objetos

            if (Posicao.Y <= 0)
            {
                Posicao.Y = 0;
            }

            if (Posicao.Y >= AtributosJanela.ClientBounds.Height - TamanhoBarra.Height)
            {
                Posicao.Y = AtributosJanela.ClientBounds.Height - TamanhoBarra.Height;
            }

            if (Posicao.X <= 0)
            {
                Posicao.X = 0;
            }

            if (Posicao.X >= AtributosJanela.ClientBounds.Width - TamanhoBarra.Width)
            {
                Posicao.X = AtributosJanela.ClientBounds.Width - TamanhoBarra.Width;
            }

            #endregion

            return Posicao;
        }

        public void Draw(SpriteBatch spriteBatch)
        {
            spriteBatch.Draw(Barra, Posicao, Color.White);
        }

    }
}
